﻿Imports Dainfo.ControleEstoque.Model
Imports Dainfo.ControleEstoque.Dados

Partial Public Class Inventario
    Inherits System.Web.UI.Page
    Private Const keyProdutos As String = "Produtos"
    Private _dadosProduto As New DadosProduto()

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            GetAllDataFromDB()
            BindData()
            MultiView1.SetActiveView(viewInventario)
        End If

    End Sub

    Protected Sub GridView1_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvProduto.RowEditing
        gvProduto.EditIndex = e.NewEditIndex
        BindData()
    End Sub

    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles gvProduto.RowUpdating
        'Retrieve the table from the session object.
        Dim clientes As New List(Of Produto)()
        clientes = CType(ViewState(keyProdutos), List(Of Produto))

        'Update the values.
        Dim row As GridViewRow = gvProduto.Rows(e.RowIndex)
        Dim produto As Produto = clientes(row.DataItemIndex)

        produto.Codigo = HttpUtility.HtmlDecode(row.Cells(2).Text)
        produto.Descricao = CType(row.Cells(3).Controls(0), TextBox).Text
        produto.ValorVenda = Convert.ToDouble(CType(row.Cells(4).Controls(0), TextBox).Text)
        produto.ValorCompra = Convert.ToDouble(CType(row.Cells(5).Controls(0), TextBox).Text)
        produto.Quantidade = CType(row.Cells(6).Controls(0), TextBox).Text




        'Reset the edit index.
        gvProduto.EditIndex = -1

        _dadosProduto.Update(produto)
        GetAllDataFromDB()

        'Bind data to the GridView control.
        BindData()
    End Sub

    Private Sub BindData()
        gvProduto.DataSource = ViewState(keyProdutos)
        gvProduto.DataBind()
    End Sub


   

    Protected Sub GridView1_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles gvProduto.RowCancelingEdit
        'Reset the edit index.
        gvProduto.EditIndex = -1
        'Bind data to the GridView control.
        BindData()
    End Sub

    Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvProduto.PageIndexChanging
        gvProduto.PageIndex = e.NewPageIndex
        'Bind data to the GridView control.
        BindData()
    End Sub


    Sub GetAllDataFromDB()
        ViewState(keyProdutos) = _dadosProduto.GetAll()
    End Sub



    Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvProduto.RowDeleting
        'Retrieve the table from the session object.
        Dim clientes As New List(Of Produto)()
        clientes = CType(ViewState(keyProdutos), List(Of Produto))

        'Delete the value.
        Dim row As GridViewRow = gvProduto.Rows(e.RowIndex)
        Dim cliente As Produto = clientes(row.DataItemIndex)
        _dadosProduto.Delete(cliente.Codigo)

        'BindGrid
        GetAllDataFromDB()
        BindData()
    End Sub

    Protected Sub btnSalvar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSalvar.Click
        Try
            For Each row As GridViewRow In gvProduto.Rows
                Dim txtQtd As TextBox = CType(row.Cells(2).Controls(1), TextBox)
                Dim produto As Produto = ViewState(keyProdutos)(row.RowIndex)
                produto.Quantidade = txtQtd.Text
                _dadosProduto.Update(produto)
            Next
            lblMessage.Text = "Inventário Realizado com sucesso"
            MultiView1.SetActiveView(ViewSucesso)
        Catch ex As Exception
            lblErro.Text = ex.Message
        End Try
    End Sub

    Protected Sub MultiView1_ActiveViewChanged(ByVal sender As Object, ByVal e As EventArgs) Handles MultiView1.ActiveViewChanged

    End Sub
End Class